/**
 * @author rxliuli
 */
/**
 * 备案监管
 * @class MoFilingSupervise
 * @author rxliuli
 */
class MoFilingSupervise {
    /**
     * 构造函数
     * @param {Object} [option] 可选参数
     * @param {Number} [option.id] 主键，自增
     * @param {Number} [option.houseId] 所在机房， 引base_houseInfo 表主键
     * @param {String} [option.ip] 应用IP
     * @param {String} [option.topDomain] 顶级域名
     * @param {Number} [option.subDomainCount] 子域名数
     * @param {Number} [option.filingStatus] 备案状态，1：待查询，2：已备案, 3: 自备案，4：已失效，5：未备案
     * @param {String} [option.filingNumber] 备案号/解析IP
     * @param {Number} [option.dealStatus] 处置状态， 1：未处置，2：已处置
     * @param {Number} [option.dealResult] 处置结果， 1：域名放行，2：域名阻断
     * @param {Date} [option.firstGatherTime] 首次采集时间
     * @param {Date} [option.lastActiveTime] 最后活跃时间
     * @param {Number} [option.topDomainAction] 是否模糊搜索，顶级域名
     * @param {Number} [option.subDomain] 子域名
     * @param {Number} [option.subDomainAction] 是否模糊搜索，子域名
     * @param {Number} [option.ipAction] 是否模糊搜索，应用 IP
     * @param {Number} [option.filingNumberAction] 是否模糊搜索，备案号
     * @param {Array.<Date>} [option.firstGatherTimeRange] 时间区间，首次采集时间
     * @param {Array.<Date>} [option.lastActiveTimeRange] 时间区间，最后活跃时间
     * @param {Date} [option.firstGatherTimeStart] 开始时间，首次采集时间
     * @param {Date} [option.firstGatherTimeEnd] 结束时间，最后活跃时间
     * @param {Date} [option.lastActiveTimeStart] 开始时间，首次采集时间
     * @param {Date} [option.lastActiveTimeEnd] 结束时间，最后活跃时间
     * @param {...Object} [option.args] 其他参数
     */
    constructor({
                    id,
                    houseId,
                    ip,
                    topDomain,
                    subDomainCount,
                    filingStatus,
                    filingNumber,
                    dealStatus,
                    dealResult,
                    firstGatherTime,
                    lastActiveTime,
                    topDomainAction,
                    subDomain,
                    subDomainAction,
                    ipAction,
                    filingNumberAction,
                    firstGatherTimeRange,
                    lastActiveTimeRange,
                    firstGatherTimeStart,
                    firstGatherTimeEnd,
                    lastActiveTimeStart,
                    lastActiveTimeEnd,
                    ...args
                } = {}) {
        this.id = id
        this.houseId = houseId
        this.ip = ip
        this.topDomain = topDomain
        this.subDomainCount = subDomainCount
        this.filingStatus = filingStatus
        this.filingNumber = filingNumber
        this.dealStatus = dealStatus
        this.dealResult = dealResult
        this.firstGatherTime = firstGatherTime
        this.lastActiveTime = lastActiveTime
        this.topDomainAction = topDomainAction
        this.subDomain = subDomain
        this.subDomainAction = subDomainAction
        this.ipAction = ipAction
        this.filingNumberAction = filingNumberAction
        this.firstGatherTimeRange = firstGatherTimeRange
        this.lastActiveTimeRange = lastActiveTimeRange
        this.firstGatherTimeStart = firstGatherTimeStart
        this.firstGatherTimeEnd = firstGatherTimeEnd
        this.lastActiveTimeStart = lastActiveTimeStart
        this.lastActiveTimeEnd = lastActiveTimeEnd
        Object.assign(this, args)
    }
}